"""
个人理解，此方案相比原来的会造成全局污染的方案，是使用内部函数去实现递增，而不是外部函数本身做递增，使用内部函数时，函数内部使用的是自由变量，而不是全局变量，故而可以规避变量污染的问题
"""

a = 10


def add():
    '''
    现在需要add时a递增
    ten方法时依旧执行if的分支
    :return:
    '''
    # global a # 使用全局变量，会导致ten的方法无法执行if逻辑
    # a = 10 # 使用局部变量，会导致add方法永远打印的是10
    a = 10

    def inner():
        nonlocal a
        a += 1
        print('a:', a)

    return inner


def ten():
    if a == 10:
        print('ten!')
    else:
        print('全局变量a，不等于10')


increment = add()

increment()
increment()
increment()
ten()
